Implementing geographical taxonomy within network-accesible service registries using spatial extensions

ABSTRACT

Techniques are disclosed for using geographical taxonomy data in network-accessible registries (such as the Universal Description, Discovery, and Integration, or “UDDI”, registry), where this taxonomy data leverages spatial extenders within spatially-enabled databases. Built-in functions of a spatially-enabled object relational database system can then be used for entries in the network-accessible registry.

BACKGROUND OF THE INVENTION

[0001] 1. Field of the Invention

[0002] The present invention relates to computer programming, and deals more particularly with techniques for using geographical taxonomy data with spatial extensions (e.g., as extensions to an object-relational database) to facilitate programmatically locating information in network-accessible service registries.

[0003] 2. Description of the Related Art

[0004] Network-accessible service registries are known in the art, and may be queried to programmatically locate registered services. A registry which is currently being deployed is referred to as the Universal Description, Discovery, and Integration (or “UDDI”) registry. The term “UDDI” is also used more generally to refer to the registry and/or to the specification defining the registry and its associated access techniques. As stated on the Internet home page of the standards group defining the UDDI specification, “UDDI is the building block that will enable businesses to quickly, easily and dynamically find and transact business with one another using their preferred applications.”. (See http://www.uddi.org for more information on UDDI. The UDDI specification may be found at http://www.uddi.org/specification.html.) UDDI registries are designed for use with so-called “Web services” technology. Web services technology is a mechanism which is known in the art for distributed application integration in client/server networks such as the World Wide Web. Many industry experts consider the service-oriented Web services initiative to be the next evolutionary phase of the Internet. With Web services, distributed network access to software will become widely available for program-to-program operation, without requiring intervention from humans. Web services technology is also commonly referred to as the “service-oriented architecture” for distributed computing.

[0005] In general, a “Web service” is an interface that describes a collection of network-accessible operations. Web services fulfill a specific task or a set of tasks. They may work with one or more other web services in an interoperable manner to carry out their part of a complex workflow or a business transaction. For example, completing a complex purchase order transactions may require automated interaction between an order placement service (i.e., order placement software) at the ordering business and an order fulfillment service at one or more of its business partners. As another example, when an on-line retailer accepts a customer's order for goods, the order completion process may include programmatically selecting a delivery service to deliver the goods to the customer, such that the customer can be provided with delivery tracking information as part of his order confirmation.

[0006] Web services are generally structured using a model in which an enterprise providing network-accessible services publishes the services to a network-accessible registry (referred to herein as a UDDI registry, for purposes of illustration only), and other enterprises needing services are able to query the registry to learn of the services' availability. The participants in this computing model are commonly referred to as (1) service providers, (2) service requesters, and (3) service brokers. These participants, and the fundamental operations involved with exchanging messages between them, are illustrated in FIG. 1. The service providers 100 are the entities having services available, and the registry to which these services are published 110 is maintained by a service broker 120. The service requesters 150 are the entities needing services and querying 140 the service broker's registry. When a desired service is found using the registry, the service requester dynamically binds 130 to the located service provider in order to use the service. The binding occurs using service information which is conveyed in a platform-neutral format.

[0007] The operations illustrated in FIG. 1 are designed to occur programmatically, without human intervention, such that a service requester can search for a particular service and make use of that service dynamically, at run-time.

[0008] When searching a network-accessible registry for a network-accessible service, it may happen that more than one candidate service is located. For example, if an on-line retailer is searching for a delivery service with which to programmatically schedule delivery of a customer's order, a number of delivery services may be located, including the postal service and package delivery services offered by private companies. It is then necessary to select from among the candidates. Any number of criteria may be used, which may vary widely. For example, when searching for a fee-based service, the cost of the service may be used to rank the candidates. As another example, the reputation and/or name recognition of the service provider may be an important factor in the selection process. As yet another example, the geographic location of the service provider, or the geographic boundaries in which the service is available, may be important.

[0009] Service providers are allowed to “tag” entries they publish in a registry with information that allows the published entry to be categorized. The categorization may follow any number of different taxonomies or classification schemes. The tags on the entries can then be used when searching the registry according to values in a taxonomy. (The terms “classification scheme” and “taxonomy” are used interchangeably herein.)

[0010] Taxonomies are typically structured as multi-level hierarchies in which successively-deeper levels of the hierarchy provide more granularity or refinement of information. For example, suppose a product-based taxonomy defines the value “123” as representing computers, “1231” as representing computer software, and “1232” as representing computer hardware. The computer software category might be further refined as having a value “12311” for operating system software and “12312” for application software. The “12311” value for operating system software might be further refined (using 6-digit values) to distinguish different operating systems. To locate all operating system software, a search can be carried out using the 5-digit value “12311”; if the searcher is only interested in software for particular operating systems, then the corresponding 6-digit value can be used instead.

[0011] One popular classification scheme is the United Nations Standard Products and Services Code, or “UNSPSC”™. UNSPSC defines numeric identifiers for goods and services, where values for different levels of the hierarchy are separated using “.” notation. Another popular classification scheme is a “Dun and Bradstreet number”, or “D-U-N-S”® number. D-U-N-S numbers are nine-digit identifiers of business entities, and are structured to hierarchically link together the entities within a larger corporate structure. The North American Industry Classification System, or “NAICS”, is another classification scheme. It defines 6-digit codes for business sectors in Canada, the United States, and Mexico. A 4-digit industry code is defined by the Standard Industrial Classification, or “SIC”, system. International Standard 3166 from the International Organization for Standardization (“ISO”), which is titled “Codes for the representation of names of countries and their subdivisions”, defines a geographic taxonomy in which countries of the world are defined using alphabetic abbreviations. Subdivisions or regions within countries are also defined, in some cases, for further refinement. Thus the state of Florida is defined as “US-FL”, identifying that this state (“FL”) is a region of the United States (“US”). Other geographic classification schemes include the GeoWeb Geographic Classification (“GGC”) system, which uses 6-digit values identifying a city, state/region, country, and continent.

[0012] UDDI registry entries may include any of these described taxonomies. While existing implementations of UDDI registries support several of these taxonomies, the taxonomy support in UDDI is extensible, and thus the taxonomies that can be referenced within a UDDI registry are not limited to the examples described above.

[0013] To maximize exposure of a company's goods and services, the company will likely provide multiple tags when categorizing its entries in a registry. Thus, for example, a package delivery service might provide a tag identifying the D-U-N-S number of the corporate entity and a numeric identifier corresponding to a “package delivery” service category in one of the service-related taxonomies. In fact, it is likely that more than one different identifier will be provided to identify this particular service, using the identifier from each taxonomy in which a package delivery service category is defined. The registry entry for the package delivery service will also likely be tagged with “cross-category” tags (i.e., identifiers of one or more categories which are related to package delivery), to further increase exposure of the company's service. For example, the registry entry may be tagged with an identifier for “shipping” or for “business services”, including the possibility for multiple identifiers from multiple taxonomies for each of these related categories.

[0014] The volume of data within network-accessible registries is expected to be very large. With multiple tags on the service entries, including the cross-category tags and the duplicated tag values to provide categorization in multiple taxonomies, the search process will be complex. In some cases, available services may be overlooked during a search because a service has been categorized using a value or values in one taxonomy while the search specified a value in another taxonomy. Accordingly, what is needed are techniques for improving categorization in network-accessible registries, thereby enabling improved searching of these registries.

SUMMARY OF THE INVENTION

[0015] An object of the present invention is to provide improved categorization techniques for network-accessible registries.

[0016] Another object of the present invention is to provide techniques for leveraging spatial extensions for categorizing, and for searching, network-accessible registry entries.

[0017] A further object of the present invention is to define techniques for using geographical taxonomies to register data in network-accessible service registries.

[0018] Still another object of the present invention is to define techniques to dynamically define and redefine geographical taxonomies.

[0019] Yet another object of the present invention is to define techniques which enable efficiently increasing the granularity of search data in network-accessible registries.

[0020] Other objects and advantages of the present invention will be set forth in part in the description and in the drawings which follow and, in part, will be obvious from the description or may be learned by practice of the invention.

[0021] To achieve the foregoing objects, and in accordance with the purpose of the invention as broadly described herein, the present invention provides methods, systems, and computer program products for improving categorization in network-accessible registries. In one aspect, this technique comprises: specifying a geographical taxonomy identifier for an entry to be included in a network-accessible registry; and specifying a classification value for the entry, wherein the classification value is defined with reference to the specified geographical taxonomy identifier, wherein the specified geographical taxonomy identifier and classification value point to a spatially-enabled database.

[0022] This technique may further comprise using one or more geographical taxonomy identifiers and classification values to search the network-accessible registry. A search of the network-accessible registry using one or more search criteria may locating at least one entry, and a hashing operation may be performed on data of this located entry to yield an index value. This index value may then be used to access the spatially-enabled database. The access preferably locates a row in the spatially-enabled database, and spatial extensions provided by the spatially-enabled database may be used to operate upon contents of the located row. Rather than accessing the database, the located geographical taxonomy identifier and classification value may alternatively be saved for later use.

[0023] Optionally, a compaction process may be performed on the registry. This preferably comprises: determining selected ones of the entries in the network-accessible registry whose geographical taxonomy identifier and classification value are obsolete or no longer needed; and programmatically removing the selected ones from the network-accessible registry. The programmatic removal may be preceded by prompting a user to confirm the removal, and then only continuing with the removal if the user consents.

[0024] The network-accessible registry may be, but is not required to be, a UDDI registry.

[0025] The entries may be used to register business services, business entities, and/or technical specifications in the network-accessible registry.

[0026] The present invention may also be used advantageously in methods of doing business. For example, an implementation of the present invention may be used to improve categorization in network-accessible registries, enabling those registries to offer improved search services. Such improved categorization services may, for example, be marketed as subscription services whereby companies pay a fee for including spatially-extended geographic taxonomy data or as “hit-based” services whereby the registry tracks the number of “hits” made to a registered service through its spatially-extended geographic taxonomy data. As another example, the improved categorization techniques disclosed herein may be used for the dynamic definition and redefinition of trading zones.

[0027] The present invention will now be described with reference to the following drawings, in which like reference numbers denote the same element throughout.

BRIEF DESCRIPTION OF THE DRAWINGS

[0028]FIG. 1 provides a diagram illustrating the participants and fundamental operations of a service-oriented architecture, according to the prior art;

[0029]FIG. 2 illustrates several data type structures, and relationships among them, in the UDDI data model of the prior art;

[0030]FIG. 3 is a Unified Modeling Language diagram showing how the data types in FIG. 2 are related;

[0031] FIGS. 4-7 provide schema definitions of the data types shown in FIG. 2, and FIGS. 8, 9, and 11 provide schema definitions of supporting data types;

[0032]FIG. 10 provides a sample businessEntity element, corresponding to the definition in FIG. 4;

[0033]FIG. 12 provides a Unified Modeling Language diagram corresponding to the schema definitions in FIGS. 8, 9, and 11;

[0034]FIG. 13 provides a sample categoryBag element, according to the definition in FIG. 11; and

[0035]FIG. 14 illustrates a common geometric model used by spatially-enabled database systems, according to the prior art;

[0036]FIGS. 15A and 15B provide sample categorization data, for purposes of illustrating operation of preferred embodiments of the present invention; and

[0037]FIG. 16 illustrates how categorization data created according to preferred embodiments maps onto a spatially-enabled database.

DESCRIPTION OF PREFERRED EMBODIMENTS

[0038] As discussed earlier, UDDI is an example of a network-accessible registry technique with which businesses may list their services and with which service requesters may find businesses providing particular services. Distributed application integration in client/server networks may be achieved by issuing UDDI requests to locate distributed services through a UDDI registry, and then dynamically binding to the located service. In this manner, service requesters are provided with transparent access to program components which may reside in one or more remote locations. However, the volume of taxonomy information that will be stored in registries is expected to make searching complex, and in some cases otherwise-valid results may be missed in a search because the searcher has used a value or values from one taxonomy while available services that would meet all of the other search criteria have been categorized using values in one or more other taxonomies.

[0039] The present invention defines improved techniques for categorizing information in registries. Using the disclosed techniques, the search process can operate more accurately and more efficiently. The UDDI registry, as well as its data structures and access methods, will now be described, and the manner in which preferred embodiments of the present invention operate within this environment will be demonstrated. Note, however, that references to the UDDI registry and to particular data structure formats, notations, and so forth, are provided by way of illustration and not of limitation: the inventive concepts disclosed herein may be used advantageously in other environments, without deviating from the scope of the present invention.

[0040] The UDDI registry specification defines several core data type structures, including “businessEntity”, “businessService”, “bindingTemplate”, and “tModel”. These data type structures, and relationships among them, are illustrated in FIG. 2. The primary role of the businessEntity data type 200 is to provide information about the entity publishing services in a registry, such as its name and contact information. A particular businessEntity instance may offer (i.e., publish) a number of business services in the registry, where each service is identified using an instance of the businessService data type 210. A businessService instance describes a service type in business terms, including a name for the service, a description for the service, and so forth.

[0041] Each businessService instance has an instance of bindingTemplate data type 220 for each way in which a service requester can access (i.e, invoke) the service. A bindingTemplate instance may contain a description, an access point definition which specifies how to call the service (e.g., as a Uniform Resource Identifier, or “URI”), etc. An instance of bindingTemplate may reference one or more instances of tModel data type 230. The primary role of a tModel is to point to a technical definition (i.e., interface specification) for a registered service. The tModels can be used as “technical fingerprints” to identify services. (In addition to bindingTemplates, tModels may also be used in other data structures.)

[0042]FIG. 3 is a Unified Modeling Language (“UML”) diagram showing how instances of the data types in FIG. 2 are related, and provides a more formal definition of the information just described textually. As is known in the art, UML diagrams provide a precise description of the relationship between various entities. (UML is a standard of the Object Management Group, and is described in “UML Toolkit”, H. Eriksson, M. Penker, published by John Wiley and Sons, 1997.) Starting with the annotation tags across the bottom of FIG. 3, the purpose of each entity is documented. For example, this UML diagram indicates that each BusinessEntity 320 describes information about the company, and the tModel 350 is described as containing invocation details. The relationship between the entities are also shown. For example, the tModel 350 is associated with the BindingTemplate 340 such that there may be zero to many tModels associated with a single BindingTemplate. In turn, each BusinessService 340 has at least one, and perhaps many, BindingTemplates 340 associated with it.

[0043] The entities depicted in FIG. 3 will now be described in more detail. BusinessEntity 320 has a list of URLs that may be used to provide more information about the company (through “DiscoveryURL” instances; see element 300); a list of company contacts 310; and a list of the registered business services 330 offered by the company. For each BusinessService 330, a list of the available invocation descriptions, or BindingTemplates 340, is provided. The binding template may refer to a tModel 350 (or to multiple tModels), thereby implying certain specific and identifiable specifications that are provided. Thus, if an application needs to search for implementors of tModel “xyz”, it can look for a binding template with a reference to this tModel.

[0044] Values for UDDI data structures are typically expressed using the Extensible Markup Language, or “XML”. FIGS. 4-7 provide schema syntax which defines the format of the businessEntity, businessService, bindingTemplate, and tModel data types. (Refer to the UDDI specification for more detailed information about these data types.) The businessEntity and tModel data types include a placeholder for elements named “identifierBag”. See reference numbers 410 of FIG. 4 and 710 of FIG. 7. The schema for an identifierBag is shown in FIG. 8, and comprises one or more “keyedReference” elements, where each of these elements provides an identifier that may be used to identify the businessEntity or tModel. The schema for a keyedReference is shown in FIG. 9. As shown therein, a keyedReference comprises a tModelKey attribute, which is typically specified as a Universal Unique Identifier (“UUID”) value; a keyName attribute, which is normally used for readability; and a keyValue attribute, which is used for specifying a value that is interpreted within a particular context. The context is identified by the tModelKey value. These attributes will be discussed in more detail below. (A “UUID” value is a 128-bit value which is guaranteed to be unique across all space and time.)

[0045]FIG. 10 provides example data values for an instance of the businessEntity data type. The sample businessEntity specification 1000 describes the IBM Corporation as a publisher of registered information (see reference number 1020 of FIG. 10). Three different identifiers 1031, 1032, and 1033 are provided in the identifierBag 1030 for this business entity. In this example, the business entity named “IBM Corporation” 1020 and having business key value A#1 1010 is therefore also identified using its Dun & Bradstreet number 1031, its U. S. tax identifier 1032, and its NAICS classification number 1033.

[0046] In the example of FIG. 10, any or all of these identifiers 1031, 1032, 1033 might be used when searching a registry to locate a business entity. Thus, a searcher (e.g., an application program or a search utility) may proceed by first determining the Dun and Bradstreet number for IBM, the U. S. tax identifier for IBM, or the NAICS number for IBM, and then using that value as an argument of the search.

[0047] In addition to the identifierBag, the businessEntity and tModel data types also include a placeholder for elements named “categoryBag”; the businessService data type includes this placeholder as well. See reference numbers 420 of FIG. 4, 520 of FIG. 5, and 720 of FIG. 7. The categoryBag schema is provided in FIG. 11, and as shown therein, the structure of a categoryBag instance is analogous to the structure of identifierBag (as shown in FIG. 8). FIG. 12 provides UML diagrams for the identifierBag and categoryBag structures, showing that identifierBag 1200 and categoryBag 1230 both contain a list of keyedReference instances 1210, where each keyedReference contains a reference to a tModel instance 1220.

[0048] An instance of categoryBag is used to provide the taxonomy values that categorize entries in the network-accessible registry. Similar to identifierBags, a keyedReference element within a categoryBag specifies a “keyValue” attribute that is interpreted in a particular namespace or context, where this context is identified by the corresponding tModelKey value. In the case of categoryBags, that context is a taxonomy used for categorization. Thus, entries in a categoryBag instance may be used to identify the categories with which a registered service (or a business entity or a tModel) is associated.

[0049] Referring again to the product-based taxonomy example that included an application software classification of “1231”, suppose that the value “123125” identifies network-accessible application software that schedules a package delivery service, and further suppose that these classification values are defined according to a hypothetical taxonomy “categorizeComputers”. FIG. 13 shows a sample categoryBag element containing this value “123125” as the value of the keyValue attribute of a keyedReference. This value “123125” derives meaning by virtue of the particular taxonomy with which it is associated. Thus, while it signifies package delivery scheduling software in the hypothetical taxonomy, a value of “123125” might represent completely different services in other taxonomies, such as dentistry services in one taxonomy and florist services in yet another.

[0050] For the example interpretation, when the sample categoryBag in FIG. 13 is specified as part of a businessService entry in the UDDI registry, this is an indication that this businessService pertains to network-accessible package delivery scheduling software. The provider of the service might also want to associate the service with other categories. Suppose that value “4567” represents “services available from Acme Computer Co.” in the hypothetical taxonomy. Then, in addition to the keyedReference element shown in FIG. 13, another keyedReference element having its keyValue attribute set to “4567” might be specified in the businessService element where Acme Computer Co. registers its package delivery scheduling software.

[0051] A search for package delivery scheduling software using the value “123125” will then locate Acme's service, and so will a search for Acme's services using the value “4567”. It is anticipated that service providers will specify multiple keyedReference elements in a categoryBag, as in this example, to maximize the likelihood that a search will locate their registered service.

[0052] A businessService instance may also be categorized according to values from more than one taxonomy. Suppose, for example, that a completely different taxonomy also specifies values for computers and network-accessible package delivery scheduling software, perhaps using the value “14.15”, where 14 corresponds to computers and 15 corresponds to package delivery scheduling software. If a keyedReference is not specified within a categoryBag according to this taxonomy, Acme's software will be overlooked on searches that are based on this taxonomy. The sample key values in this example have been chosen to emphasize that the values from the different taxonomies may be completely unrelated, yet still describe the same service.

[0053] As another example of using values in multiple taxonomies for a particular businessService instance, suppose that Acme Computer wants its scheduling software to be found if a search is performed for “all services based in Computer City, N.Y., U.S.A.”, where Acme's facilities are located. If the GGC value for Computer City is “654321”, then Acme can register its software under the GGC taxonomy by including an additional keyedReference element that identifies (via its tModelKey) the GGC taxonomy, where this keyedReference element specifies the value “654321” for the keyValue attribute. (Note that when multiple keyedReference elements are specified, they may be in a single categoryBag or in more than one categoryBag.) Acme's software can then be found by searches using two alternative values in the categorizeComputers taxonomy as well as by a search using the GGC value. However, suppose the search uses an ISO 3166 value of “US-NY”, to find all services registered as being associated with the state of New York. This search will overlook Acme's registered service. To avoid this undesirable result, publishers are likely to register their services with a large number of categorizations, which in turn will lead to slower searching.

[0054] The present invention avoids these problems of the prior art by defining geographical taxonomy data that leverages spatial extenders within spatially-enabled databases. A brief description of spatially-enabled databases will now be provided.

[0055] Geographic information systems are known in the art, and store geographic or cartographic (i.e., map-oriented) data. Systems are also known in the art for using relational databases to process (e.g., store and access) this type of geographic data. When a relational database is adapted for use with geographic information system (“GIS”) data, the database is often referred to as “spatially-enabled”.

[0056] Geographic data pertains to physical locations, and when using 2 dimensions, is typically expressed in terms of latitude and longitude. The latitude and longitude values for a particular location are given relative to fixed points of reference, using a coordinate system in which a latitude value represents an offset from the equator and a longitude value represents an offset from the prime meridian.

[0057] Geographic data may describe the physical location or area of a place or thing, or even the location of a person. When geographic data is stored in a spatially-enabled database, it is stored using a geometric model in which locations/areas are expressed in terms of geometric shapes or objects. The geometric data stored according to this model may also be referred to as “spatial data”. In addition to locations or areas of geographic objects, spatial data may also represent relationships among objects, as well as measurements or distances pertaining to objects. As an example of relationships among objects, spatial data may be used to determine whether a geometric shape corresponding to the location of a particular bridge intersects a geometric shape corresponding to the location of a river (thus determining whether the bridge crosses the river). As an example of using spatial data for measurements or distances, the length of a road passing through a particular county could be determined using the geometric object representing the road and a geometric object which specifies the boundaries of the county.

[0058] Spatial data values are expressed in terms of “geometry” or “geometric” data types. Thus, the location of a landmark might be expressed as a point having (x,y) coordinates, and the perimeter of a lake might be defined using a polygon. Typical spatially-enabled database systems support a set of basic geometry data types and a set of more complex geometry data types, where the basic types comprise points, line strings, and polygons, and the complex types comprise collections of points, collections of line strings, and collections of polygons.

[0059] A common geometric model used by spatially-enabled database systems is shown in FIG. 14. As shown therein, the model is structured as a hierarchy or tree 1300 having geometry 1405 as its root, and having a number of subclasses. Point 1410, linestring 1420, and polygon 1430 represent the basic geometry data types. In this model 1400, linestring 1420 is a subclass of curve 1415, and polygon 1430 is a subclass of surface 1425. Geometry collection class 1435 is the root of a subtree representing the more complex geometric data types, and each subclass thereof is a homogeneous collection. Multipolygon 1445, multistring 1455, and multipoint 1460 represent the collections of polygons, line strings, and points, respectively. Multipolygon 1445 is a subclass of multisurface 1440 in this model, and multistring 1455 is a subclass of multicurve 1450. Only the classes which are leaves of this tree 1400 (i.e., 1410, 1420, 1430, 1445, 1455, and 1460) are instantiable in typical spatially-enabled database systems; the other nodes correspond to abstract classes. (Each of these entities is an actual data type.)

[0060] Referring now to the basic data types in particular, geometric data according to the model 1400 of FIG. 14 may be expressed in terms of a single point having (x,y) coordinates, or may be described as a line string or a polygon. A line string may be considered as one or more line segments which are joined together, and is defined using an ordered collection of (x,y) coordinates (i.e. points) that correspond to the endpoints of the connected segments. A polygon is defined using an ordered collection of points at which a plurality of line segments end, where those line segments join to form a boundary of an area.

[0061] Many different examples may be imagined where points, line strings, and polygons can be used for describing locations or areas. A point might represent the location of a landmark such as a house or a building, or the intersection of two streets. A line string might be used to describe a street, or the path of a river or power line, or perhaps a set of driving directions from one location to another. A polygon might be used to describe the shape of a state or city, a voting district, a lake, or any parcel of land or body of water.

[0062] Once spatial information has been stored in a database, the database can be queried to obtain many different types of information, such as the distance between two cities, whether a national park is wholly within a particular state, and so forth.

[0063] As one example of a spatially-enabled database, a feature known as “Spatial Extender” can be added to IBM's DB2® relational database product to provide GIS support. Spatial Extender provides support for the geometric data types shown in FIG. 14, and provides a number of built-in functions for operating on those data types. When using Spatial Extender, spatial data can be stored in columns of spatially-enabled database tables by importing the data or deriving it. The import process uses one of several input formats (such as text or binary data, the details of which are not pertinent to the present invention), and processes that data using built-in functions to convert it to geometric data. Spatial data may be derived either by operating on existing geometric data (for example, by defining a new polygon as a function of an existing polygon) or by using a process known as “geocoding”. A geocoder is provider with Spatial Extender that takes as input an address in the United States and derives a geometric point representation. Other geocoders can be substituted to provide other types of conversions.

[0064] Returning now to the detailed description of the present invention, preferred embodiments of the present invention leverage a DB® object relational database system in which the Spatial Extender feature has been installed to provide spatial data support. (An implementation of the present invention may leverage another database system which provides analogous support, without deviating from the scope of the present invention.) Refer to “IBM® DB® Spatial Extender User's Guide and Reference”, Version 7.2, published by IBM as IBM publication SC27-0701-01 (July 2001), for more information on Spatial Extender. This User's Guide is hereby incorporated herein as if set forth fully, and is hereinafter referred to as the “Spatial Extender User's Guide”. (“IBM” and “DB2” are registered trademarks of IBM.) UDDI provides for taxonomies, such as the D-U-N-S, ISO 3166, and GGC taxonomies, to be registered. Any keyedReference element can then refer to these taxonomies using their registered tModelKey (UUID) value. However, UDDI also provides a less formal way to use taxonomies, through a “general_keywords” taxonomy. This taxonomy was designed for use with categorizations for which the overhead of formal registration and using registered values is thought to be excessive. Preferred embodiments of the present invention leverage this general_keywords taxonomy for categorizing business services in a novel manner, providing references to geospatial data in a spatially-enabled database (or in more than one spatially-enabled database).

[0065] Alternatively, a taxonomy that supports references to geospatially-enabled databases might be registered, in which case the standard UDDI types taxonomy may then be used with embodiments of the present invention.

[0066] As an example of categorizing a registered service according to the present invention, suppose that a geospatially-enabled database contains an entry specified using the polygon 1430 data type, where this polygon defines the boundary of Computer City, NY. Or, the database might contain an entry specified using the point 1410 data type, where this point represents the town of Computer City. A keyvalue attribute that resolves to this polygon or point, as appropriate, can then be used to associate Acme's scheduling software with Computer City. A search for registered services from this geography can then be conducted.

[0067] In addition to using points or polygons to define the boundary of a city, additional or different types of geographic entities can be associated with a registered service using these or other geometric data types. For example, a search might be conducted to locate all registered package delivery services operating within the state of New York, and when the services have specified a keyedReference whose value resolves to the state in which they operate, the set of services within New York can be efficiently determined. Other functions which are available through spatially-enabled databases can then be used as well, for example to efficiently compute the distance between a customer location and the available drop-ship locations for a customer's order.

[0068] For the standard UDDI types taxonomy, values of the keyName attribute within a keyedReference element serve only descriptive purposes. However, when using the general_keywords taxonomy, the keyName attribute takes on additional meaning. In particular, the keyName identifies the set of values from which the value of the keyvalue attribute is taken. Therefore, according to the UDDI specification, a keyName value is preferably specified as a Uniform Resource Name (“URN”) when using the general_keywords taxonomy, and care should be taken to avoid name collisions.

[0069] While it is known in the art to use the general_keywords taxonomy for categorizing entries using unregistered taxonomies, it is not known in the art to define a geographical taxonomy that leverages spatial extenders within spatially-enabled databases for use within network-accessible registries, nor is it known to specify keyedReference elements using taxonomies that refer to spatially-enabled databases or that leverage spatial extensions, and it is therefore not known to perform searches of network-accessible registries using geospatial data values or references thereto.

[0070]FIGS. 15A and 15B show sample categorization data, for purposes of illustrating operation of preferred embodiments of the present invention. In this example, a business entity has registered two services, specifying a businessService element for each service. See reference numbers 1500 and 1550. The first registered service is named “Acme Service Number 1”, and is described as “Package Delivery Scheduler”. See reference number 1502. The second registered service is named “Acme Service Number 2”, and is described as “Package Tracking Service”. See reference number 1552. Each registered service includes a binding template. See reference numbers 1504 and 1554. The access points specified therein might identify the location of a Web page for this service, for example. Each service also includes a tModelInstancelnfo element, having a tModelKey reference (a UUID) that points to a tModel where the implementation details of this service are described.

[0071] The first registered service includes two categoryBag elements 1510, 1520, each of which has keyedReference elements that categorize this service with reference to multiple taxonomies, including prior art taxonomies and geographical taxonomies as disclosed herein. The second registered service includes a single categoryBag element 1560, and in the example, is being categorized with reference to a prior art taxonomy and two geographical taxonomies (one of which is also used in categoryBag 1520). These categoryBag elements will now be described in more detail.

[0072] The first categoryBag 1510 includes a first keyedReference element categorizing this service with reference to the UNSPSC taxonomy, and a hypothetical sub-category “Software”, in which a hypothetical category value of “01.02.03.04.05” is associated with this registered service. (The value of the tModelKey is a UUID that points to the tModel for the UNSPSC taxonomy.) This is an example of a prior art categorization. A second keyedReference element in this categoryBag 1510 specifies its value with reference to a geographical taxonomy, according to the present invention. In this example, the geographical taxonomy is identified by its URN “categorizeComputers.sample:taxonomies:Zone7”. In this taxonomy, the service has a categorization value of “1235”. So, for example, the taxonomy “. . . Zone7” might be used for categorizing locations within the United States Department of Agriculture (“USDA”) plant hardiness zone number 7, where the value “1235” might identify a particular subdivision of that zone. According to the present invention, this taxonomy name and its associated value then point to a geometric data type in a spatially-enabled database, where the geometric data type preferably provides a description of an associated location. (USDA plant hardiness zones identify irregularly-shaped bands across the United States.)

[0073] The second categoryBag 1520 includes a categorization value of “1231” in the NAICS taxonomy, which is an example of a prior art categorization of this service. This categoryBag 1520 also includes a categorization of the type disclosed herein, where the value “1234” is associated with this service according to the classification scheme identified using the URN “categorizeComputers.sample:taxonomies:Area7”. This “. . . Area7” taxonomy may specify some arbitrary geographic classification system, and the value “1234” within this system is associated with the registered service by inclusion of this keyedReference element.

[0074] For the second business service, shown in FIG. 15B, the single categoryBag 1560 includes three keyedReference elements, categorizing this service in three different ways. First, the UNSPSC Software category is used again, where this second service 1550 is again associated with the value “01.02.03.04.05”. Thus, in the hypothetical categorization, both service 1500 and service1550 are identified as pertaining to software. CategoryBag 1560 next uses the “. . . Area7” taxonomy, which was also used in categoryBag 1520, and in this taxonomy the second service is associated with the value “1234”. Accordingly, both service 1500 and service 1550 are identified as belonging to the same category “1234” in this “. . . Area7” taxonomy. Finally, a different geographical taxonomy, identified as “urn:categorizeComputers.sample:taxonomies: Mid” is used in categoryBag 1560, and service 1550 is associated with the value “1236” in that taxonomy.

[0075] When a service requester performs a search over these categoryBag elements using the value “1231” (which, for purposes of illustration, is assumed to identify software-related entries in the registry, with reference to the NAICS taxonomy), a search would locate only the first service (via its categoryBag 1520). When the present invention is used, both the first and the second service will be located if using the general_keyword taxonomy “. . . Area7” and the keyValue “1234”. Searches using the other specified taxonomies and taxonomy values will also locate one or both of these registered services.

[0076] According to preferred embodiments, when a keyValue element from a keyedReference is located, a hashing operation is performed on that keyValue to determine an index to use when accessing a spatially-enabled database for a geographical taxonomy. It may happen values from more than one taxonomy will hash to the same index value. In this case, the keyedReference elements (regardless of their taxonomy) will identify the same row in the database. Thus, it can be determined that these distinct values represent the same information. Furthermore, once a service requester (i.e., an application or utility) has located the keyValue, it can save this value and/or use it directly to access the hashing function and thus obtain an index to use for retrieving data from the spatially-enabled database.

[0077] See FIG. 16, which pictorially demonstrates how several keyvalue attributes stored in keyedReference elements (identified at reference numbers 1610, 1620, and 1630) are resolved. Each keyValue is passed through a hash function 1640, which generates an index 1660 into a spatially-enabled database 1650. In this example, the value “1234” within the “. . . Area7” taxonomy (see reference number 1610) and the value “1235” within the “. . . Zone7” taxonomy (see reference number 1620) both resolve to an index value which points to the second row of the database 1650, and the value “1236” within the “. . . Mid” taxonomy (see reference number 1630) points to the first row of this database 1650. Thus, these taxonomy references identify the coordinates of sample “Region A” and “Region B” rows. A service requester 1670, rather than requesting a search, might already have located the value “1235” from “. . . Zone7”, and an application 1680 may therefore pass this information directly to the hash function 1640 (bypassing the search and categorization layers, that is).

[0078] An advantage of using the geographical taxonomy data as disclosed herein is that multiple names for a particular geometric data type can be used within the keyedReference elements, and these can be resolved automatically. Thus, fewer entries can be used in the categoryBags. For example, the publisher of service 1500 only needs to include a keyedReference element specifying the keyValue of 1235 within the “. . . Zone7” taxonomy, or the keyValue of 1234 within the “. . . Area7” taxonomy, because both of these identify the same row in the spatially-enabled database. A search using either approach will therefore locate registered service 1500.

[0079] This result is made possible by using spatial extensions and hashing/lookup functions, whereby services can be determined to be the same even though they are identified with different categorization values.

[0080] In addition to locating registered services within particular geographic boundaries, use of the present invention also facilitates other programmatic functions, including distance calculations, generating maps, calculating costs, making display or presentation choices (e.g., using miles vs. kilometers, as appropriate to a determined geography), and so forth.

[0081] The techniques disclosed herein may be used for keyedReference entries that are not strictly associated with business services. For example, categoryBags can be used with businessEntity elements and tModel elements, in addition to businessService elements, and thus geographical taxonomies may be used to classify business entities and/or tModels using the techniques of the present invention.

[0082] Using the spatial extensions of the present invention, more granular categorization can be provided using less data, and searches can be provided more efficiently and more effectively. The disclosed techniques work within defined and accepted UDDI access specifications, and extend existing categorization techniques in an advantageous manner. In this manner, creation of unique, ill-defined taxonomies can be avoided. Existing relational database technology can be leveraged for data normalization and data management. The spatial extensions, geometric data types, grid indexing functions, user-defined functions, and built-in procedures of the database system can also be used. In this manner, operations on the stored data can use optimized built-in functions of the database system, rather than requiring an applications programmer to provide complex code in his/her application for interacting with street and intersection data. As a result, programmer efficiency is increased and code complexity is reduced, thereby leading to decreased program development and support costs. Furthermore, use of the optimized built-in database functions for interacting with the stored data will typically increase the efficiency of application programs and search utilities.

[0083] Optionally, a compaction process may be performed on the businessService categoryBags, whereby keyedReference elements that have not been used recently are purged from the registry.

[0084] As will be appreciated by one of skill in the art, embodiments of the present invention may be provided as methods, systems, or computer program products. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects. Furthermore, the present invention may take the form of a computer program product which is embodied on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, and so forth) having computer-usable program code embodied therein.

[0085] The present invention has been described with reference to flow diagrams and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each flow and/or block of the flow diagrams and/or block diagrams, and combinations of flows and/or blocks in the flow diagrams and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, embedded processor or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions specified in the flow diagram flow or flows and/or block diagram block or blocks.

[0086] These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flow diagram flow or flows and/or block diagram block or blocks.

[0087] The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flow diagram flow or flows and/or block diagram block or blocks.

[0088] While preferred embodiments of the present invention have been described, additional variations and modifications may occur to those skilled in the art once they learn of the basic inventive concepts. In particular, while preferred embodiments have been described with reference to a UDDI registry, this is for purposes of illustration only. Therefore, it is intended that the appended claims shall be construed to include the preferred embodiments and all such variations and modifications as fall within the spirit and scope of the invention. 

What is claimed:
 1. A method of improving categorization in network-accessible registries, comprising steps of: specifying a geographical taxonomy identifier for an entry to be included in a network-accessible registry; and specifying a classification value for the entry, wherein the classification value is defined with reference to the specified geographical taxonomy identifier, wherein the specified geographical taxonomy identifier and classification value point to a spatially-enabled database.
 2. The method according to claim 1, further comprising the step of using a particular geographical taxonomy identifier and classification value to search the network-accessible registry.
 3. The method according to claim 1, further comprising the steps of: searching the network-accessible registry according to one or more search criteria, thereby locating at least one geographical taxonomy identifier and its associated classification value; hashing the located geographical taxonomy identifier and classification value to yield an index value; and accessing the spatially-enabled database using the index value.
 4. The method according to claim 1, further comprising the steps of: searching the network-accessible registry according to one or more search criteria, thereby locating at least one geographical taxonomy identifier and its associated classification value; and saving the located geographical taxonomy identifier and classification value for later use.
 5. The method according to claim 4, further comprising the steps of: hashing the saved geographical taxonomy identifier and classification value to yield an index value; and accessing the spatially-enabled database using the index value.
 6. The method according to claim 1, further comprising the steps of: determining selected ones of the entries in the network-accessible registry whose geographical taxonomy identifier and classification value are obsolete or no longer needed; and programmatically removing the selected ones from the network-accessible registry.
 7. The method according to claim 6, wherein the step of programmatically removing is preceded by the step of prompting a user to confirm the removal, and then only continuing with the removal if the user consents.
 8. The method according to claim 1, wherein the network-accessible registry is a Universal Description, Discovery, and Integration registry.
 9. A system for improving categorization in network-accessible registries, comprising: means for specifying a geographical taxonomy identifier for an entry to be included in a network-accessible registry; and means for specifying a classification value for the entry, wherein the classification value is defined with reference to the specified geographical taxonomy identifier, wherein the specified geographical taxonomy identifier and classification value point to a spatially-enabled database.
 10. The system according to claim 9, further comprising: means for searching the network-accessible registry using a particular geographical taxonomy identifier and classification value, thereby locating at least one entry; and means for accessing the spatially-enabled database using at least one of the located entries.
 11. The system according to claim 10, wherein the means for accessing locates a row in the spatially-enabled database, and further comprising means for using spatial extensions provided by the spatially-enabled database to operate upon contents of the located row.
 12. The system according to claim 9, further comprising: means for determining selected ones of the entries in the network-accessible registry whose geographical taxonomy identifier and classification value are no longer needed; means for prompting a user to confirm whether the selected ones should be removed from the network-accessible directory; and means for programmatically removing the selected ones from the network-accessible registry if the user consents, via the means for prompting.
 13. The system according to claim 9, wherein the entry registers a business service in the network-accessible registry.
 14. The system according to claim 9, wherein the entry registers a business entity in the network-accessible registry.
 15. The system according to claim 9, wherein the entry registers a technical specification in the network-accessible registry.
 16. A computer program product for improving categorization in network-accessible registries, the computer program product embodied on one or more computer-readable media and comprising: computer-readable program code means for specifying a geographical taxonomy identifier for an entry to be included in a network-accessible registry; and computer-readable program code means for specifying a classification value for the entry, wherein the classification value is defined with reference to the specified geographical taxonomy identifier, wherein the specified geographical taxonomy identifier and classification value point to a spatially-enabled database.
 17. The computer program product according to claim 16, further comprising computer-readable program code means for using a particular geographical taxonomy identifier and classification value to search the network-accessible registry.
 18. The computer program product according to claim 16, further comprising: computer-readable program code means for searching the network-accessible registry according to one or more search criteria, thereby locating at least one geographical taxonomy identifier and its associated classification value; computer-readable program code means for hashing the located geographical taxonomy identifier and classification value to yield an index value; and computer-readable program code means for accessing the spatially-enabled database using the index value.
 19. A method of offering improved categorization of network-accessible registries, comprising steps of: allowing specification of a geographical taxonomy identifier for an entry to be included in a network-accessible registry; allowing specification of a classification value for the entry, wherein the classification value is defined with reference to the specified geographical taxonomy identifier, wherein the specified geographical taxonomy identifier and classification value point to a spatially-enabled database; and providing search facilities for the network-accessible registry, which search for entries matching one or more selected geographical taxonomy identifiers and classification values. 